package com.ruoyi.project.system.mapper;

import java.util.List;

import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysOrganize;
import org.apache.ibatis.annotations.Param;

/**
 * 组织结构Mapper接口
 * 
 * @author frank
 * @date 2024-08-26
 */
public interface SysOrganizeMapper 
{
    /**
     * 查询组织结构
     * 
     * @param organizeId 组织结构主键
     * @return 组织结构
     */
    public SysOrganize selectSysOrganizeByOrganizeId(String organizeId);

    /**
     * 查询组织结构列表
     * 
     * @param sysOrganize 组织结构
     * @return 组织结构集合
     */
    List<SysOrganize> selectSysOrganizeList(SysOrganize sysOrganize);


    /**
     * 根据角色ID查询组织树信息
     *
     * @param roleId 角色ID
     * @param deptCheckStrictly 部门树选择项是否关联显示
     * @return 选中部门列表
     */
    List<String> selectOrganizeListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);


    /**
     * 新增组织结构
     * 
     * @param sysOrganize 组织结构
     * @return 结果
     */
    int insertSysOrganize(SysOrganize sysOrganize);

    /**
     * 校验组织名称是否唯一
     *
     * @param orgname 部门名称
     * @param orgno 部门编号
     * @return 结果
     */
    SysOrganize checkOrganizeNameUnique(@Param("orgno") String orgno, @Param("orgname") String orgname);

    /**
     * 是否存在子节点
     *
     * @param organizeId 部门ID
     * @return 结果
     */
    int hasChildByOrganizeId(String organizeId);

    /**
     * 查询是否存在用户
     *
     * @param organizeId 部门ID
     * @return 结果
     */
    int checkOrganizeExistUser(String organizeId);

    /**
     * 修改组织结构
     * 
     * @param sysOrganize 组织结构
     * @return 结果
     */
    int updateSysOrganize(SysOrganize sysOrganize);

    /**
     * 删除组织结构
     * 
     * @param organizeId 组织结构主键
     * @return 结果
     */
    int deleteSysOrganizeByOrganizeId(String organizeId);

    /**
     * 批量删除组织结构
     * 
     * @param organizeIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteSysOrganizeByOrganizeIds(String[] organizeIds);
}
